/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package air_hockey_v2.engine;

/**
 *
 * @author cooler
 */
public class TacoIA extends Taco {

    private int level;

    public TacoIA(String filename, int difi) {
        super(filename);
        level = difi;
    }

    @Override
    public void move(int x, int y) {
        int xTaco = this.getX();
        int yTaco = this.getY();

        if (xTaco >= 400 && (xTaco + 46) <= 775 && yTaco >= 175 && (yTaco + 46) <= 525) { //LIMITES DO CAMPO AZUL
            if (yTaco < (y - 5)) {
                yTaco = yTaco + level;
                this.setY(yTaco);
            }
            if (yTaco > (y - 5)) {
                yTaco = yTaco - level;
                this.setY(yTaco);
            }
//            if (xTaco < (x - 5)) { //Comportamento com disco atras do taco
//
//                if (yTaco > (y - 50) || yTaco < (y + 50)) { //Comportamento caso o disco esteja longe do taco
//                    xTaco = xTaco + 4 * level;
//                    this.setX(xTaco);
//                    if (yTaco < (y - 5)) {
//                        yTaco = yTaco + 3 * level;
//                        this.setY(yTaco);
//                    } else {
//                        yTaco = yTaco - 3 * level;
//                        this.setY(yTaco);
//                    }
//                } else { //Comportamento caso o disco esteja muito perto do taco
//                    xTaco = xTaco + level;
//                    this.setX(xTaco);
//                    if (yTaco < (y - 5)) {
//                        yTaco = yTaco - level;
//                        this.setY(yTaco);
//                    }
//                    if (yTaco > (y + 5)) {
//                        yTaco = yTaco + level;
//                        this.setY(yTaco);
//                    }
//                }
//            }
//            if (xTaco >= (x + 5)) { //Comportamento com disco a frente do taco
//                xTaco = xTaco - level;
//                this.setX(xTaco);
//                if (yTaco < (y - 5)) {
//                    yTaco = yTaco + level;
//                    this.setY(yTaco);
//                }
//                if (yTaco > (y + 5)) {
//                    yTaco = yTaco - level;
//                    this.setY(yTaco);
//                }
//            }
        } else {
            if (xTaco < 400) {
                this.setX(400);
            }
            if ((xTaco + 46) > 775) {
                this.setX(775 - 46);
            }
            if (yTaco < 175) {
                this.setY(175);
            }
            if ((yTaco + 46) > 525) {
                this.setY(525 - 46);
            }
        }
    }

    @Override
    public void colisao(Itens disco) {
        int xD, yD, xT, yT;
        double aux;
        xD = disco.getX() + 18;
        yD = disco.getY() + 18;
        xT = x + 23;
        yT = y + 23;
        aux = Math.sqrt(Math.pow((xD - xT), 2) + Math.pow((yD - yT), 2));
        if (aux <= 41) {
            if (xD < (xT - 23 / 2) && (yD < (yT - 23 / 2) || yD > (yT + 23 / 2))) {
                /* Colisão com o topo esquerdo e lado inferior do taco */
                disco.setVx(disco.getVx() * -1);
                disco.setVy(disco.getVy() * -1);
            } else if (xD >= (xT - 23 / 2) && xD <= (xT + 23 / 2)) {
                /* Colisão com o topo e lado inferior do taco */
                disco.setVy(disco.getVy() * -1);
            } else if (xD > (xT + 23 / 2) && (yD < (yT - 23 / 2) || yD > (yT + 23 / 2))) {
                /* Colisão com o topo direito e lado inferior direito do taco */
                disco.setVx(disco.getVx() * -1);
                disco.setVy(disco.getVy() * -1);
            } else {
                disco.setVx(disco.getVx() * -1);
            }
            som.play();
        }
    }
}
